Watch-Time Mechanics
← Concepts

MuviPe · Rewards & Playback

One ticket, two independent clocks

Buying a ticket starts two things that never touch each other again: an affiliate tree that fills toward 363 positions and pays out, and a watch-time pool that every device on the account draws down together. Everything on the Dashboard, Tickets, Devices and Playback screens is a different view onto those same two numbers.

The mechanism

From src/lib/tickets-data.ts and src/lib/playback-data.ts — how a ticket, its devices, and a top-up all connect to one shared allowance.

opens 363 positions grants runtime × 3 fills to 363 spends while playing (shared, not per-device) Total / Consumed / Awaiting extends total only no position · no commission Ticket bought on a title Affiliate Tree filled · of 363 positions earned ₹ · fastFive closes at 363 → Expired 15-day cooldown before reopen Watch-Time Pool totalMinutes / consumedMinutes = Video Consumption % on the ticket's own gauge My Devices Master (signed-in) · TV · … Master alone can add/remove devices Playback Details dashboard aside + /playback screen Top-Up ₹49 → +5h, on a running-low ticket appears when the pool reads low
A ticket forks into two clocks that never rejoin: the tree it opens, and the watch-time pool it grants. Every device signed into the account spends from the same pool; Playback Details and the ticket's own Video Consumption gauge are two read views of that one number, and a top-up only ever grows the pool's denominator.

Two clocks, on purpose

This is the one fact the whole feature depends on: running out of watch time is not the same event as the tree closing.

Affiliate clock

Counts positions filled toward 363, independent of how much has been watched. A ticket can close on 363 with time to spare, or sit at 40% filled while its watch time is long gone — the tree keeps filling and keeps paying either way.

Watch-time clock

Counts minutes spent against the allowance a ticket bought. Running it out only closes playback — it never closes the ticket, and a top-up is the only way to add more of it.

How the allowance is sized

allowance = title runtime × 3 a 120-min film → 6h of watch time, shared across every device

The five pieces, as the code models them

Each screen renders one of these; none of them keep their own copy of the numbers — they're all derived from the ticket's consumed percent so the figures can't drift apart.

Ticket

Opens the tree and sets the allowance. Runs the affiliate clock.

filledof 363
earned
consumed0–100%
fastFivex/3

Video Consumption / Watch Time

The pool itself — built from the ticket's consumed percent, never stored as raw minutes.

totalMinutesruntime × 3
consumedMinutesderived
remainingMinutesderived

My Devices

Belongs to the account, not to a ticket. Every device here can spend from any ticket's pool.

Mastersigned-in, admin
TV / othersadded by Master

Playback Details

Read-only view: which device has which title open, and that session's slice of the pool.

device+ title
total / consumed/ awaiting
watchinglive vs. idle

Top-Up

Buys minutes only. No new position, no tree, no commission — priced apart from a ticket for exactly that reason.

price₹49
adds5h
opens a ticket?no